<?php
namespace app\admin\controller;
//use think\Controller;//引入这个命名空间下的类文件
use app\admin\controller\Base;//因为Base中引入Controller所以上面就不用引入了。
use app\admin\model\Article as ArticleModel;
use think\Db;
class Article extends Base
{
    public function lst()
    {
        // 分页输出列表 每页显示3条数据
    $list = ArticleModel::paginate(3);//用模型一对多关联查询
  
    //$list = Db::name('article')->alias('a')->join('cate c','c.id=a.cateid')->field('a.id,a.title,a.pic,a.author,a.state,c.catename')->paginate(3);//用链试的方法关联查询
    $this->assign('list',$list);//模版赋值
        return $this->fetch();//渲染模版，默认就是和方法同名的lst.html
    }

    public function add()

    {
    	if (request()->isPost()){//如果接收到了post信息
          //  dump($_POST); die;
    		$data = [
    			'title'=>input('title'),
                'author'=>input('author'),
    			'desc'=>input('desc'),
                'keywords'=>str_replace('，', ',', input('keywords')),
                'content'=>input('content'),
                'cateid'=>input('cateid'),
                'time'=>time(),
    		];
            if (input('state')=='on') {
                $data['state']=1;
            }
            if ($_FILES['pic']['tmp_name']) {
                 // 获取表单上传文件 例如上传了001.jpg
                $file = request()->file('pic');
                 $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads');
                 $data['pic']='/uploads/'.$info->getSaveName();//getSaveName获取保存的文件名（包含动态生成的目录）
                
            }
            $validate = \think\Loader::validate('Article');//引入验证文件

            if(!$validate->scene('add')->check($data)){//开始验证，验证场景add,
                $this->error($validate->getError()); die;//如果验证不通过就报错
            }
    		if (Db::name('article')->insert($data)) {
    		return $this->success('添加文章成功！','lst');
    		}else{
    		return $this->error('添加文章失败！');
    		}
    		return;
    	}	
        $cateres = Db::name('cate')->select();//查分类信息
        $this->assign('cateres',$cateres);
    	return $this->fetch();
    }
    public function edit()
    {
        $id = input('id');
        //$article = Db::name('article')->where('id',$id)->find();
        $articles = Db::name('article')->find($id);//主健要一条
        if (request()->isPost()) {
            $data = [
                'id'=> input('id'),
                'title'=>input('title'),
                'author'=>input('author'),
                'desc'=>input('desc'),
                'keywords'=>str_replace('，', ',', input('keywords')),
                'content'=>input('content'),
                'cateid'=>input('cateid'),
                'time'=>time(),
            ];
            if (input('state')=='on') {
                $data['state']=1;
            }else{
                $data['state']=0;
            }
            if ($_FILES['pic']['tmp_name']) {
                 // 获取表单上传文件 例如上传了001.jpg
                $file = request()->file('pic');
                 $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads');
                 $data['pic']='/uploads/'.$info->getSaveName();//getSaveName获取保存的文件名（包含动态生成的目录）
                
            }
            $validate = \think\Loader::validate('Article');//引入验证文件
            if(!$validate->scene('edit')->check($data)){//开始验证，验证场景add,
                $this->error($validate->getError()); die;//如果验证不通过就报错
            }
            $save = Db::name('article')->update($data);
            if ($save !== false) {//或这样做 Db::table('tp_admin')->update($data)
                $this->success('修改文章成功！','lst');
            }else{
                $this->error('修改文章失败！');
            }
            return;
        }
        $cateres = Db::name('cate')->select();//查分类信息
        $this->assign('cateres',$cateres);
       
        $this->assign('articles',$articles);
        return $this->fetch();
    }
    public function del()
    {
       $id = input('id');
     
     
        if (Db::name('article')->delete($id)) {
          //if (db('admin')->delete(input('id'))) {//助手函数
              $this->success('删除文章成功！','lst');
          }else{
              $this->error('删除文章失败！');
          }
      
       ;
    }

}